package cn.buk.api.ctrip.dto.tbooking;

import cn.buk.api.ctrip.util.xstream.MyDateConverter;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamConverter;

import java.util.Date;
import java.util.List;

/**
 * Created by yfdai on 15/7/25.
 * 修改为今日出票单
 */
@XStreamAlias("OpenIssueBillResponse")
public class TBookingOpenIssueBillInfo {

    /**
     * 出票单号
     */
    @XStreamAlias("IssueBillID")
    private int issueBillID;

    /**
     * 1: 待处理
     * 3: 出票成功
     * 今日出票单接口仅返回未在携程置已出票的出票单数据。
     * 出票单状态枚举：
     * 1:未出票
     * 2:出票失败（自动出票：出票失败）
     * 3:已出票
     * 4:已取消（供应商确认同意取消） 5:已作废（供应商拒单、携程修改PNR、超时未出票转回） 6:已入库（自动出票：已在航司网站下单） 7:已支付（自动出票：已在航司网站支付） 8:验证中
     */
    @XStreamAlias("IssueStatus")
    private int issueStatus;


    /**
     * PNR最晚保留时间
     */
    @XStreamAlias("Adtk")
    @XStreamConverter(value = MyDateConverter.class, strings = {"yyyy-MM-dd'T'HH:mm:ss"})
    private Date adtk;

    @XStreamAlias("AirlineRecodeNo")
    private String airlineRecordNo;  //航司大编码

    /**
     * 0:非取消 1:取消申请 2:供应商确认取消
     */
    @XStreamAlias("CancelIssueStatus")
    private int cancelIssueStatus;  //取消出票单状态

    /**
     * 创建时间
     */
    @XStreamAlias("DataChange_CreateTime")
    @XStreamConverter(value = MyDateConverter.class, strings = {"yyyy-MM-dd'T'HH:mm:ss"})
    private Date dataChangeCreateTime;

    /**
     * 最后更新时间
     */
    @XStreamAlias("DataChange_LastTime")
    @XStreamConverter(value = MyDateConverter.class, strings = {"yyyy-MM-dd'T'HH:mm:ss"})
    private Date dataChangeLastTime;

    /**
     * B2C网站入库号
     */
    @XStreamAlias("ExtOrderID")
    private String extOrderID;

    /**
     * 订单类型:I:国际-地区 N:国内
     */
    @XStreamAlias("FlightClass")
    private String flightClass;

    /**
     * 出票备注（含商旅三方协议内容等）
     */
    @XStreamAlias("IssueRemark")
    private String issueRemark;


    /**
     * 出票方式
     *
     *
     * 1:自动出票 2:手工出票
     */
    @XStreamAlias("IssueWay")
    private int issueWay;

    /**
     * 最晚出票时间
     */
    @XStreamAlias("LastPrintTicketTime")
    @XStreamConverter(value = MyDateConverter.class, strings = {"yyyy-MM-dd'T'HH:mm:ss"})
    private Date lastPrintTicketTime;

    /**
     * 出票配置OfficeNO
     */
    @XStreamAlias("OfficeNO")
    private String officeNo;

    /**
     * 预订时间
     */
    @XStreamAlias("OrderDate")
    @XStreamConverter(value = MyDateConverter.class, strings = {"yyyy-MM-dd'T'HH:mm:ss"})
    private Date orderDate;

    @XStreamAlias("OrderID")
    private long orderID;

    /**
     * 政策Code
     */
    @XStreamAlias("PolicyCode")
    private String policyCode;

    /**
     * 政策ID
     */
    @XStreamAlias("PolicyID")
    private long policyID; //政策ID

    /**
     * 政策类型
     */
    @XStreamAlias("PolicyType")
    private String policyType;

    /**
     * 小记录编号
     */
    @XStreamAlias("RecordNO")
    private String pnrNo;

    /**
     *票种 1:BSP 2:B2B 3:B2C 4:P2P
     */
    @XStreamAlias("TicketType")
    private int ticketType;

    /**
     * 紧急程度
     * 1:临近转出时间 （距离转出小于30分钟） 2:催出票 （urgencyTimes>0） 3:AV舱位不足5个 4:临近PNR ADTK （距离ADTK大于3小时） 5:出票超时长规范（进入超过1小时） 6:普通
     */
    @XStreamAlias("Urgency")
    private int urgency;

    /**
     * 催出票次数
     */
    @XStreamAlias("UrgeTimes")
    private int urgeTimes;

    /**
     * 销售种类
     * 国内： AirLineMarketing:航司直销 PriorityPackage:优选套餐 BusinessPriority:商务优选 TravelPackage:旅行套餐 国际-地区： Prioritizing:商务优选 Exclusive:旅行套餐
     */
    @XStreamAlias("SaleType")
    private String saleType;

    /**
     * 认领人
     */
    @XStreamAlias("IssueBillAssignOperator")
    private String issueBillAssignOperator;

    /**
     * 国际-地区改签单表示
     * 该参数国际-地区专用。 T:国际-地区改签单 F:非国际-地区改签单
     */
    @XStreamAlias("IntlRebookOrder")
    private String intlRebookOrder;

    /**
     * 创建出票单时间
     */
    @XStreamAlias("TBookingDateTime")
    @XStreamConverter(value = MyDateConverter.class, strings = {"yyyy-MM-dd'T'HH:mm:ss"})
    private Date tbookingDateTime;

    @XStreamAlias("FlightWay")
    private String flightWay;

    /**
     * 国际-地区订单改签原单号
     */
    @XStreamAlias("OldOrderID")
    private int oldOrderId;

    /**
     * 供应商ID
     */
    @XStreamAlias("FlightAgency")
    private int flightAgency;

    /**
     * 0:未知（无值） 1:Eterm订位 2:Abacus订位 4:Amadeus订位 8: Sabre订位 16:弃程订位
     */
    @XStreamAlias("RealReservationType")
    private int realReservationType;

    /**
     * 货币单位（CNY,HKD,USD等）
     */
    @XStreamAlias("CurrencyType")
    private String currencyType;

    /**
     * 大客户编码
     */
    @XStreamAlias("CustomerID")
    private String customerId;

    /**
     * 自动出票登录帐户
     */
    @XStreamAlias("LoadAccount")
    private String loadAccount;

    /**
     * 出票EI项(退改签政策等)
     */
    @XStreamAlias("EIRemark")
    private String eiRemark;

    /**
     * 英文退改签说明
     */
    @XStreamAlias("E_EIRemark")
    private String eeiRemark;

    /**
     * 特殊出票指令
     * 运价中TourCode项
     */
    @XStreamAlias("SpecialCode")
    private String specialCode;

    /**
     * 开票航司
     * 政策指定开票航司二代
     */
    @XStreamAlias("OwnerAirline")
    private String ownerAirline;

    /**
     * 运价编码
     * 运价中FareBasis项
     */
    @XStreamAlias("FareBasis")
    private String fareBasis;

    /**
     * 携程自有退改规则
     * T:携程自有退改规则 F:非携程自有退改规则
     */
    @XStreamAlias("CtripRCrule")
    private String ctripRCrule;


    /**
     * 是否VIP用户单
     */
    @XStreamAlias("IsVIP")
    private boolean vip;

    @XStreamAlias("BaggagesAndMealInfos")
    private List<TBookingBaggagesAndMealInfo> mealInfos;

    @XStreamAlias("BillDetailList")
    private List<TBookingOpenIssueBillDetail> details;



    public int getIssueBillID() {
        return issueBillID;
    }

    public void setIssueBillID(int issueBillID) {
        this.issueBillID = issueBillID;
    }

    public Date getAdtk() {
        return adtk;
    }

    public void setAdtk(Date adtk) {
        this.adtk = adtk;
    }

    public String getAirlineRecordNo() {
        return airlineRecordNo;
    }

    public void setAirlineRecordNo(String airlineRecordNo) {
        this.airlineRecordNo = airlineRecordNo;
    }

    public int getCancelIssueStatus() {
        return cancelIssueStatus;
    }

    public void setCancelIssueStatus(int cancelIssueStatus) {
        this.cancelIssueStatus = cancelIssueStatus;
    }

    public Date getDataChangeCreateTime() {
        return dataChangeCreateTime;
    }

    public void setDataChangeCreateTime(Date dataChangeCreateTime) {
        this.dataChangeCreateTime = dataChangeCreateTime;
    }

    public Date getDataChangeLastTime() {
        return dataChangeLastTime;
    }

    public void setDataChangeLastTime(Date dataChangeLastTime) {
        this.dataChangeLastTime = dataChangeLastTime;
    }

    public String getEiRemark() {
        return eiRemark;
    }

    public void setEiRemark(String eiRemark) {
        this.eiRemark = eiRemark;
    }

    public String getExtOrderID() {
        return extOrderID;
    }

    public void setExtOrderID(String extOrderID) {
        this.extOrderID = extOrderID;
    }

    public String getFlightClass() {
        return flightClass;
    }

    public void setFlightClass(String flightClass) {
        this.flightClass = flightClass;
    }

    public String getIssueRemark() {
        return issueRemark;
    }

    public void setIssueRemark(String issueRemark) {
        this.issueRemark = issueRemark;
    }

    public int getIssueStatus() {
        return issueStatus;
    }

    public void setIssueStatus(int issueStatus) {
        this.issueStatus = issueStatus;
    }

    public int getIssueWay() {
        return issueWay;
    }

    public void setIssueWay(int issueWay) {
        this.issueWay = issueWay;
    }

    public Date getLastPrintTicketTime() {
        return lastPrintTicketTime;
    }

    public void setLastPrintTicketTime(Date lastPrintTicketTime) {
        this.lastPrintTicketTime = lastPrintTicketTime;
    }

    public String getOfficeNo() {
        return officeNo;
    }

    public void setOfficeNo(String officeNo) {
        this.officeNo = officeNo;
    }

    public Date getOrderDate() {
        return orderDate;
    }

    public void setOrderDate(Date orderDate) {
        this.orderDate = orderDate;
    }

    public long getOrderID() {
        return orderID;
    }

    public void setOrderID(long orderID) {
        this.orderID = orderID;
    }

    public String getPolicyCode() {
        return policyCode;
    }

    public void setPolicyCode(String policyCode) {
        this.policyCode = policyCode;
    }

    public long getPolicyID() {
        return policyID;
    }

    public void setPolicyID(long policyID) {
        this.policyID = policyID;
    }

    public String getPolicyType() {
        return policyType;
    }

    public void setPolicyType(String policyType) {
        this.policyType = policyType;
    }

    public String getPnrNo() {
        return pnrNo;
    }

    public void setPnrNo(String pnrNo) {
        this.pnrNo = pnrNo;
    }

    public int getTicketType() {
        return ticketType;
    }

    public void setTicketType(int ticketType) {
        this.ticketType = ticketType;
    }

    public int getUrgency() {
        return urgency;
    }

    public void setUrgency(int urgency) {
        this.urgency = urgency;
    }

    public int getUrgeTimes() {
        return urgeTimes;
    }

    public void setUrgeTimes(int urgeTimes) {
        this.urgeTimes = urgeTimes;
    }

    public String getSaleType() {
        return saleType;
    }

    public void setSaleType(String saleType) {
        this.saleType = saleType;
    }

    public String getIssueBillAssignOperator() {
        return issueBillAssignOperator;
    }

    public void setIssueBillAssignOperator(String issueBillAssignOperator) {
        this.issueBillAssignOperator = issueBillAssignOperator;
    }

    public String getIntlRebookOrder() {
        return intlRebookOrder;
    }

    public void setIntlRebookOrder(String intlRebookOrder) {
        this.intlRebookOrder = intlRebookOrder;
    }

    public List<TBookingOpenIssueBillDetail> getDetails() {
        return details;
    }

    public void setDetails(List<TBookingOpenIssueBillDetail> details) {
        this.details = details;
    }

    public Date getTbookingDateTime() {
        return tbookingDateTime;
    }

    public void setTbookingDateTime(Date tbookingDateTime) {
        this.tbookingDateTime = tbookingDateTime;
    }

    public String getFlightWay() {
        return flightWay;
    }

    public void setFlightWay(String flightWay) {
        this.flightWay = flightWay;
    }

    public int getOldOrderId() {
        return oldOrderId;
    }

    public void setOldOrderId(int oldOrderId) {
        this.oldOrderId = oldOrderId;
    }

    public int getFlightAgency() {
        return flightAgency;
    }

    public void setFlightAgency(int flightAgency) {
        this.flightAgency = flightAgency;
    }

    public int getRealReservationType() {
        return realReservationType;
    }

    public void setRealReservationType(int realReservationType) {
        this.realReservationType = realReservationType;
    }

    public String getCurrencyType() {
        return currencyType;
    }

    public void setCurrencyType(String currencyType) {
        this.currencyType = currencyType;
    }

    public String getCustomerId() {
        return customerId;
    }

    public void setCustomerId(String customerId) {
        this.customerId = customerId;
    }

    public String getLoadAccount() {
        return loadAccount;
    }

    public void setLoadAccount(String loadAccount) {
        this.loadAccount = loadAccount;
    }

    public String getEeiRemark() {
        return eeiRemark;
    }

    public void setEeiRemark(String eeiRemark) {
        this.eeiRemark = eeiRemark;
    }

    public String getSpecialCode() {
        return specialCode;
    }

    public void setSpecialCode(String specialCode) {
        this.specialCode = specialCode;
    }

    public String getOwnerAirline() {
        return ownerAirline;
    }

    public void setOwnerAirline(String ownerAirline) {
        this.ownerAirline = ownerAirline;
    }

    public String getFareBasis() {
        return fareBasis;
    }

    public void setFareBasis(String fareBasis) {
        this.fareBasis = fareBasis;
    }

    public List<TBookingBaggagesAndMealInfo> getMealInfos() {
        return mealInfos;
    }

    public void setMealInfos(List<TBookingBaggagesAndMealInfo> mealInfos) {
        this.mealInfos = mealInfos;
    }

    public String getCtripRCrule() {
        return ctripRCrule;
    }

    public void setCtripRCrule(String ctripRCrule) {
        this.ctripRCrule = ctripRCrule;
    }

    public boolean isVip() {
        return vip;
    }

    public void setVip(boolean vip) {
        this.vip = vip;
    }
}
